1. Field of the Invention
The present invention relates generally to. synchronization of two or more asynchronous devices or systems, and more specifically to synchronization of such asynchronous devices or systems such that only stable data is exchanged when the frequencies of the devices or systems to be synchronized may or may not be unknown.
2. Description of the Prior Art
There are many times when it is necessary to exchange data between two or more asynchronous devices or systems, i.e. devices or systems having different operating frequencies as defined by their clock frequencies. Such is the case in many "handshaking" applications where data is transmitted at one frequency, but received at another frequency. A common example is the print interface between a computer and a printer where the computer typically provides data to the printer at a much faster rate than the printer is capable of handling. Thus, the printer has a printer buffer which may make use of FIFO (First In First Out) technology or other interface technology to manage the asynchronous exchange of data from the computer to the printer.
Of primary concern in asynchronous transfer of data is that the data be in a stable condition when transferred from a transmitter device to a receiver device. If the data is in transition or otherwise in a meta-stable state, the data received by the receiver device may be faulty. Thus, in an asynchronous handshake situation, it is a concern that data will be not valid when read asynchronously. When data is sent from a transmitter device to a receiver device where the transmitter and receiver devices operate at different frequencies and do not share a common clock, usually the receiver device will send an active signal, such as a chip select signal, to the transmitter device requesting data. After a specific time, the chip select signal will become inactive and then the receiver will use this state change from an active to an inactive state to latch in data from the transmitter to the receiver. The difficulty with this approach arises when the transmitted data is still in transition as it is being latched into the receiver device. Thus, there exists an unmet need in the art to be able to ensure that only stable data, not data in transition, will be latched into the receiver device.
In order to exchange data between two different frequency entities, frequency sampling is commonly utilized to synchronize the frequencies. A sampling circuit usually requires a sampling clock frequency at least two times faster than the frequency of the sampled data. Synchronization is then accomplished with respect to the faster clock. However, the frequencies of devices being synchronized may not always be known. This is especially true when the frequencies are not static and change over time. Additionally, the difficulty of ascertaining relative frequencies has become more of a concern as applications require faster and faster frequencies. Thus, there is an unmet need in the art to be able to synchronize two signals even when it is unclear which is the faster of the two signals.